Computer systems are constantly improving in terms of processing speed and reliability. As these systems improve, demands for improvements in mass storage systems in terms of I/O performance, availability and storage capacity also increase. In order to address these demands, RAID storage systems have been developed. RAID is an acronym that originally stood for xe2x80x9cRedundant Arrays of Inexpensive Disksxe2x80x9d. Today, the xe2x80x9cIxe2x80x9d in RAID commonly stands for xe2x80x9cindependentxe2x80x9d.
Standard RAID systems improve I/O performance by a technique known as xe2x80x9cdisk stripingxe2x80x9d. In order to enable disk striping (on a block level), the storage capacity of the array is grouped into a set of stripes. Each stripe consists of a set of single addressable units, known as blocks, which have the same physical row address. Disk striping allows the disk array to be treated as single logical disk and improves I/O performance as it permits parallel access of disks in the array. For purposes of this document, a block used to store user data may be referred to herein as a xe2x80x9cuser blockxe2x80x9d. A block used to store parity data may be referred to herein as a xe2x80x9cparity blockxe2x80x9d.
RAID systems improve availability by using one or more data redundancy schemes wherein user data, or relationships among user data, are stored on multiple disks. This is done so that in the event of certain failures, user data is not lost. The data redundancy schemes may be categorized into two groups. The first group may be referred to herein as xe2x80x9cmirror redundancy schemesxe2x80x9d. For purposes of this document, a xe2x80x9cmirror redundancy schemexe2x80x9d is any redundancy scheme wherein user blocks are duplicated (at least once) and stored in multiple locations of the storage system. This group, therefore, includes RAID level 1 and triple mirror redundancy (triple mirror). According to RAID level 1, each user block is duplicated once. If one user block is lost, the duplicate block can be used to recover it. According to triple mirror redundancy each user block is duplicated twice.
The second group may be referred to as xe2x80x9cparity redundancy schemesxe2x80x9d. For purposes of this document, a parity redundancy scheme is any redundancy scheme wherein one or more parity blocks are generated from a given set of user blocks. This is done so that if one of the user blocks from the set becomes lost, the other user blocks and the one or more parity blocks can be used to recover it. This group, therefore, includes RAID level 5 and RAID level 6. For example, in a conventional RAID 5 system, each stripe includes multiple blocks of user data and one parity block. In the event one block in the stripe is lost (e.g., due to a disk failure), the rest of the blocks in the stripe can be used to recover it.
There is a continuing need for improvements in RAID systems in terms of I/O performance, reliability and storage costs in order to keep pace with evolving computer systems.
Briefly, and in general terms, a method according to one embodiment of the invention is provided for mapping a data storage space provided by a disk array into redundant units. The data storage space being comprised of a first and a second set of stripes, the first set of stripes each having at least xe2x80x9cNxe2x80x9d blocks and the second set of stripes each having less than xe2x80x9cNxe2x80x9d blocks. The method includes creating at least a first redundant unit for storing data according to a mirror redundancy scheme, such as RAID level 1 or triple mirror. The first redundant unit includes a block from the first set of stripes and a block from the second set of stripes. The method may also include creating a second redundant unit for storing data according to a parity redundancy scheme, such as RAID level 5 or RAID level 6. The second redundant unit includes all the blocks from a first stripe from the first set of stripes. Preferably, N is equal to three if the mirror redundancy scheme is RAID level 1 and the parity redundancy scheme is RAID level 5.
The present invention may also be implemented as a data storage system. The data storage system includes a disk array providing a storage space. The storage space including a first set of stripes each having at least xe2x80x9cNxe2x80x9d blocks and a second set of stripes each having less than xe2x80x9cNxe2x80x9d blocks. In addition, the data storage system further includes a controller which is connected to the disk array. The controller is operable to map the storage space into redundant units by creating at least a first redundant unit. The first redundant unit includes a block from the first set of stripes and a block from the second set of stripes. The controller further operates to designate the first redundant unit to store data according to a mirror redundancy scheme, such as RAID level 1 or triple mirror.
In the addition, the controller may further operate to map the storage space by creating at least a second redundant unit for storing data according to a parity redundancy scheme. The second redundant unit including all the blocks from a first stripe. The first stripe being from the first set of stripes. The controller mal also operate to receive I/O requests from an external host computer and to perform read and write operations upon the disk array in response to the I/O requests.
In one specific implementation of the data storage system, the mirror redundancy scheme is RAID level 1, the parity redundancy scheme is RAID level 5 and N is equal to 3. In another specific implementation, the mirror redundancy scheme is RAID level 1, the parity redundancy scheme is RAID level 6 and N is equal to 5. In yet another specific implementation, the mirror redundancy scheme is triple mirror, the parity redundancy scheme is RAID level 6 and N is equal to 4.
The present invention may also be implemented as a program storage medium readable by a computer, tangibly embodying a program of instructions executable by the computer to perform steps for mapping a data storage space provided by a disk array into redundant units. The data storage space includes a first and a second set of stripes, the first set of stripes each having at least a pre-determined number of blocks and the second set of stripes each having less than the pre-determined number of blocks include mapping a first block form a first stripe and a second block from a second stripe so as to create a single redundant unit for storing data according to a mirror redundancy scheme. The first stripe being from the first set of stripes and the second stripe being from the second set of stripes. Preferably, the mirror redundancy scheme is selected from a list including RAID level 1 and triple mirror. In one specific implementation, the mirror redundancy scheme is RAID level 1 and the predetermined number is equal to three.
The method steps may also include mapping each block from a second stripe so as to create a second redundant unit for storing data according to a parity redundancy scheme, the second stripe being from the first set of stripes. The parity redundancy scheme may be selected from a list including RAID level 5 and RAID level 6. In one specific implementation, the mirror redundancy scheme is RAID level 1, the parity redundancy scheme is RAID level 5 and the predetermined number is equal to three.
Other aspects and advantages of the present invention will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, illustrating by way of example the principles of the present invention.